#define _CRT_SECURE_NO_WARNINGS 1;
#include<stdio.h>

//char* GetMemory(void)
//{
//	char p[] = "hello world";
//	return p;
//}
//void Test(void)
//{
//	char* str = NULL;
//	str = GetMemory();
//	printf(str);
//}
//
//char* GetMemory(char* p)
//{
//	p = (char*)malloc(100);
//	return p;
//}
//void Test(void)
//{
//	char* str = NULL;
//	str = GetMemory(str);
//	strcpy(str, "hello world");
//	printf(str);
//}
//
//int main()
//{
//	Test();
//	return 0;
//}

//#include<stdlib.h>
//struct S 
//{
//	int a ;
//	int arr[];
//};
//
//int main()
//{
//	struct S* pc = (struct S*)calloc(sizeof(struct S) + 20 * sizeof(int));
//	if (pc == NULL)
//	{
//		perror("malloc");
//		return 1;
//	}
//	pc->a = 10;
//	struct S* ptr = (struct S*)realloc(pc, sizeof(struct S) + 20 * sizeof(int));
//	if (ptr != NULL)
//	{
//		pc = ptr;
//	}
//	else
//	{
//		perror("reallc");
//		return 1;
//	}
//	for (int i = 0; i < 20; i++)
//	{
//		pc->arr[i] = i + 1;
//	}
//	for (int i = 0; i < 20; i++)
//	{
//		printf("%d ", pc->arr[i]);
//	}
//	free(pc);
//	pc = NULL;
//	return 0;
//}

#include<stdlib.h>
int main()
{
	//int arr[10] = { 0 };
	int* ptr = NULL;
	ptr = (int*)malloc(10 * sizeof (int));
	if (ptr == NULL)
	{
		perror("malloc");
		return 1;
	}
	for (int i = 0; i < 10; i++)
	{
		*(ptr + i) = i + 1;
	}
	for (int i = 0; i < 10; i++)
	{
		printf("%d ", *(ptr + i));
	}
	printf("\n");
	int* pc = (int*)realloc(ptr, 20 * sizeof(int));
	if (pc != NULL)
	{
		ptr = pc;
	}
	else if(pc == NULL)
	{
		perror("realloc");
		return 2;
	}
	for (int i = 10; i < 20; i++)
	{
		*(ptr + i) = i + 2;
	}
	for (int i = 0; i < 20; i++)
	{
		printf("%d ", *(ptr + i));
	}
	return 0;
}